#ifndef Signal0_H
#define Signal0_H
#include "Global_Signal.h"
#include "abstractSignal.h"

/*!
 *	\class Signal : AbstractSignal
 *	\brief Enregistre un signal, représenté par un pointeur de fonction membre
 */

template <class T>
class Signal0 : public AbstractSignal
{
	public :

        /*********************************************/
        /*                      Propriétés	     */
        /********************************************/

        T * objetSignal;        /*!< Pointeur vers l'objet de base	*/

	/*************************************************************/
        /*					Constructeur         */
	/*************************************************************/

        Signal0(int (T::*apSignal)(),T * ref);

	/*************************************************************/
        /*					Méthodes	  */
	/*************************************************************/

	void Update();


};

template <class T>
Signal0<T>::Signal0(int (T::*apSignal)(),T * ref) : objetSignal(ref), pSignal(apSignal){}

template <class T>
void Signal0<T>::Update()
{
	if((objetSignal->*pSignal)())
	{
		Run();
	}
}

#endif
